function [rules ,fulfilments] = AllRules( InitData, dataSample, Antecedents, Params)
	countAnt = size(Antecedents,1);
	
  performance = zeros(InitData.LearnCount, 1);
  values = zeros(InitData.FeatureCount,1);
  rules = zeros(countAnt, InitData.FeatureCount + 1);
  fulfilments = zeros(countAnt, 1);
  
	for j=1: countAnt
    for i=1: InitData.LearnCount
			for k =1: InitData.FeatureCount
				values(k) = InitData.FuzzySetHandler(dataSample(i,k), Params(Antecedents(j,k),:,k));
			end%for k
      performance(i) = min(values);
		end%for i
    [value,index] = max(performance);
    % X1 is LV1 X2 is LV2 ... Xn is LVn THEN Class
    if (value > 0)
      row = [Antecedents(j,:) dataSample(index,InitData.FeatureCount + 1)];
      
      loc = ismember(rules,row, 'rows');
      
      if (all(loc == 0))
        rules(j,:) = row;
        fulfilments(j) = value;
      else
        jj = find(tf == 1, 1, 'first');
        fulfilments(jj) = fulfilments(jj) + value;
      end
    end
	end%for j
  rules(~any(rules,2),:) = [];
  fulfilments(~any(fulfilments,2),:) = [];
end

